Technical Q&A

Java 10 - Font プロパティのカスタマイズ(1999 年 5 月 17 日)


Q: ほかのプラットフォームでは、カテゴリが異なるオブジェクトに対して使用するフォントを判断するときに、font.properties ファイルを Java から利用することができます。しかし、Macではこのファイルが見当たりません。アプリケーションのフォントのプロパティを変更する方法を教えてください。
ほかのプラットフォーム上で使っているフォントがMac ではうまく表示されないため、いくつかのフォントを設定して、うまく表示されるか試してみたいのですが。

A: MRJ では、いくつかの理由により font.properties を使う方法が採用されていません。しかし、フォントの使い方をカスタマイズする方法はほかにもいくつかあります。どの方法が使えるかは、アプリケーションでフォントをどのように利用しているかによって異なります。

フォントを念頭に置いてアプリケーションを設計する場合、カスタマイズを可能にする最も簡単で柔軟な方法は、プラットフォームに固有のリソースバンドルやシステムプロパティをもとに、すべてのフォントを明示的に設定することです。システムプロパティからフォントを取得する方法については、『Chan & Lee The Java Class Libraries Vol. 2』 (Patric Chan、Rosanna Lee著) の「java.awt.Font.getFont」を参照してください。MRJ で独自のシステムプロパティを設定するには、MRJ SDK に含まれている JBindery のプロパティパネルを使います。

たとえば、appname.component.font プロパティを arial-bold-9 に設定し、コンポーネントのコードが次のようになっているとします。

setFont(Font.getFont("appname.component.font",
kDefaultFont));

この場合、コンポーネントのフォントは、9 ポイントのボールドの Arial に設定されます。フォントの設定はコンテナからコンポーネントに継承されます。これを利用すると、フォントを設定する箇所を最小限に抑えることができます。

アプリケーションが最初からフォントのカスタマイズをサポートするようには設計されていない場合、次のいずれかを行う必要があります。

  • コード内でフォントが設定されていない場合に使用するデフォルト値を再指定する

    MRJ 2.1 では、ウィンドウおよびダイアログで使用するデフォルトのフォントのプロパティを設定できます。それには、JBindery で次のようにプロパティを設定して、ウィンドウまたはダイアログでデフォルトとして使用するフォントまたは論理フォントを指定します。

    awt.font.macwindowdefault = SmallSystem // Appearance dependent.
    awt.font.macdialogdefault = Times


  • 論理フォント名をフォントにマッピングするようにプロパティを設定する

    この方法を使うと、任意の標準的なマッピングを再設定することも可能です。たとえば、JBindery のプロパティパネルを使って awt.font.dialog プロパティを Courier に設定すると、それまで Dialog フォントを使っていたテキストが Courier で表示されます。

    awt.font.dialog = courier
    awt.font.serif = New Century Schlbk

    (注意:論理フォント名のマッピングだけは大文字と小文字が区別されます。)

  • Map explicit font names.

1つのフォントを、別のフォントまたは論理フォントにマッピングすることができます。以下のうち、最初の例では Arial フォントを論理フォント Application にマッピングしています。2番目の例では、Times フォントの代わりに Courier フォントを使うようにマッピングしています。

awt.font.arial = Application
awt.font.times = courier

これら3つの例では、実際にインストールされているフォント名 (Courier など) または論理フォント名をプロパティに設定することができます。プラットフォーム間で共通の論理フォント名には、Serif、SansSerif、Monospaced、Dialog、DialogInput などがあります。また、System、Application、SmallSystem の3つは、MRJに固有の論理フォント名です。これらのフォントは、Mac OSのアピアランスマネージャの設定に依存します。明示的なフォント名とは違い、すべての論理フォント名では大文字と小文字が区別されます。

Swing を使っている場合は、Swing のフォントに対してシステムプロパティの異なるセットが使われることに注意してください。それらのフォントの少なくとも一部は、起動時に設定されていなければ、MRJ によって MRJ のフォント設定で代用されます。このプロパティのセットによってフォント名、スタイル、サイズが設定されます。

たとえば、次のような例をはじめ、さまざまなプロパティがあります。

swing.plaf.metal.controlFont = arial-bold-14
swing.plaf.metal.smallFont = SmallSystem--9
and so forth.

Swing には設定可能なプロパティがほかにもあります。詳しくは Swing のドキュメントを参照してください。


-- Levi Brown
Worldwide Developer Technical Support

-- Steve McGrath
Java Engineer


Technical Q&As | Contents
Previous Question | Next Question

To contact us, please use the Contact Us page.